A Very High Level Debugging Language
نویسنده
چکیده
Programmers spend a significant part of their time debugging, yet most of them simply add print statements and avoid debugging tools. Although the user interface of debuggers has improved significantly in the past decade, their basic debugging methodologies have changed little. This thesis examines single-process sequential debuggers and attempts to elucidate their weaknesses. Target-state exploration and conditional program execution are essential idioms that cannot be practiced effectively with existing debuggers. State exploration seeks answers to queries such as detecting a linked list containing a negative element and finding where that element was added. Previous work has focussed on the use of source-language interpreters and graphical interactive exploration as solutions to the state-exploration problem, but these cannot effectively search for a negative element in a linked list, specify a search for it, etc. This thesis describes Duel, a very high-level language designed specifically for state exploration in a debugger. Duel allows complex state queries to be expressed succinctly and it produces meaningful output. The traditional C operators are extended to process sequences of values, and special operators manipulate these sequences in novel ways. Over a hundred programmers have used Duel and their experience substantiates the importance of state exploration and of the inadequacies in previous approaches. Conditional execution that detects state changes in complex data structures is at the crux of advanced debugging, and it is useful to specify such conditions in Duel. Such use of Duel raises important semantic and implementation problems. These problems, possible solutions, and Duel extensions are discussed.
منابع مشابه
DUEL - A Very High-Level Debugging Language
Most source-level debuggers accept expressions in the source language, e.g., C, and can print sourcelanguage values. This approach is usually justi ed on grounds that programmers need to know only one language. But the evaluation of source-language expressions or even statements is poorly suited for making non-trivial queries about the program state, e.g., \which elements of array x[100] are po...
متن کاملAn Integrated SystemC Debugging Environment
Since its first release the system level language SystemC had a significant impact on various areas in VLSI-CAD. One remarkable benefit of SystemC lies in the support of abstraction levels beyond RTL. But being able to implement complex System-on-Chip (SoC) designs in SystemC raises the necessity of new techniques to support debugging, system exploration, and verification. We present an integra...
متن کاملAn Extensible Debugging Architecture Based on a Hybrid Debugging Framework
The cost of writing debuggers is very high. Most debuggers are written employing low level operating system and hardware specific code, which is hard to port to new platforms or architectures and to extend with new debugging techniques. Moreover, current debuggers are usually limited in the amount of analysis that they perform and the level of detail that they provide in order to assist with de...
متن کاملPosition Paper: Static Debugging of Programs Using High-Level Concurrency Libraries
High-level concurrency libraries, such as MapReduce and frameworks for fork/join parallelism, are promising tools to make parallelism available to the application developer. Optimizations and intrinsics provided by mainstream VM platforms, as well as programming languages supporting powerful means of abstraction greatly improve the performance and use of such frameworks. However, debugging prog...
متن کاملDesign and Implementation of a high-level multi- language .NET Debugger
The Microsoft .NET Common Language Runtime (CLR) provides a low-level debugging application programmers interface (API), which can be used to implement traditional source code debuggers but can also be useful to implement other dynamic program introspection tools. This paper describes our experience in using this API for the implementation of a high-level debugger. The API is difficult to use f...
متن کامل